from flask import current_app
from flask import json, jsonify
from flask import request

from info.response_code import RET
from info.utils.comments import user_login_data
from . import profile_blue
from flask import render_template, g, redirect


# 获取/设置用户基本信息
# 请求路径：/user/base_info
# 请求方式：GET， POST
# 请求参数： POST请求有参数  nick_name, signature, gender
# 返回值： errno, errmsg
@profile_blue.route('/base_info', methods=['GET', 'POST'])
@user_login_data
def base_info():

    # 如果请求方式是GET
    if request.method == "GET":
        return render_template("news/user_base_info.html", user = g.user.to_dict())

    # 如果请求方式是POST，获取参数
    nick_name = request.json.get("nick_name")
    signature = request.json.get("signature")
    gender = request.json.get("gender")

    # 校验参数，为空校验
    if not all([nick_name, signature, gender]):
        return jsonify(errno=RET.PARAMERR,errmsg="参数不全")

    # 判断性别是否符合常理
    if not gender in ["MAN", "WOMAN"]:
        return jsonify(errno=RET.DATAERR,errmsg="性别有误")

    # 修改用户数据
    try:
        g.user.nick_name = nick_name
        g.user.signature = signature
        g.user.gender = gender
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR,errmsg="修改用户数据失败")

    # 返回响应
    return jsonify(errno=RET.OK,errmsg="修改成功")



# 获取用户信息首页
# 请求路径：/user/info
# 请求方式：GET
# 请求参数：无
# 返回值：user.html页面，用户字典data数据
@profile_blue.route("/info")
@user_login_data
def user_info():
    # 判断用户是否登陆
    if not g.user:
        return redirect("/")
    # 拼接数据，渲染页面
    data = {
        "user_info":g.user.to_dict()
    }
    return render_template("news/user.html",data = data)